package com.summer.user.center.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.summer.user.center.model.User;
import com.summer.user.center.model.UserAndInfoModel;
import com.summer.user.center.model.UserAndInfoVo;
import com.summer.user.center.model.UserInfoModel;

import java.util.HashSet;
import java.util.List;

public interface UserService {

    /**
     * 根据用户名查询用户
     * @param username
     * @return 包含用户名,密码,id的对象
     */
    User findUserByUsername(String username);

    /**
     * 获取用户所拥有的权限资源
     * @param username
     * @return
     */
    HashSet<String> findResourceByUsername(String username);

    /**
     * 根据用户名查找用户信息
     * @param username
     * @return
     */
    UserInfoModel findUserInfoByUsername(String username);

    /**
     * 分页查询
     * @param vo
     * @return
     */
    PageInfo<UserAndInfoModel> findPage(UserAndInfoVo vo);

    /**
     * 查询用户名是否已使用
     * @param username
     * @param id
     * @return
     */
    boolean usernameOccupation(String username, Long id);

    /**
     * 添加用户
     * @param vo
     * @return
     */
    boolean addUser(UserAndInfoVo vo);

    /**
     * 查找用户部门id
     * @param userId
     * @return
     */
    Long findDeptId(String userId);

    /**
     * 更新用户信息
     * @param vo
     * @return
     */
    boolean updateUser(UserAndInfoVo vo);

    /**
     * 删除用户
     * @param id
     * @return
     */
    boolean deleteUser(Long id);

    /**
     * 重置用户密码
     * @param id
     * @return
     */
    boolean rePassword(Long id);

    /**
     * 查找用户拥有的所有角色的id
     * @param userId
     * @return
     */
    List<Long> findRoleIdsByUserId(Long userId);

    /**
     * 更新头像路径
     * @param userId
     * @param filePath
     */
    void updateHeadSculpture(Long userId, String filePath);

    /**
     * 修改用户信息
     * @param user
     */
    void editInfo(UserAndInfoModel user);
}
